1 using ProceduralToolkit.Examples.UI;
2 using
UnityEngine;
3
4 namespace
ProceduralToolkit.Examples
5 {
6     
public class LowPolyTerrainGeneratorConfigurator : ConfiguratorBase
7     {
8         
public MeshFilter terrainMeshFilter;
9         
public RectTransform leftPanel;
10         
public bool constantSeed = false;
11         
public LowPolyTerrainGenerator.Config config = new LowPolyTerrainGenerator.Config();
12
13         
private const int minXSize = 10;
14         
private const int maxXSize = 30;
15         
private const int minYSize = 1;
16         
private const int maxYSize = 5;
17         
private const int minZSize = 10;
18         
private const int maxZSize = 30;
19         
private const float minCellSize = 0.3f;
20         
private const float maxCellSize = 2;
21         
private const int minNoiseScale = 1;
22         
private const int maxNoiseScale = 20;
23
24         
private Mesh terrainMesh;
25
26         
private void Awake()
27         {
28             Generate();
29             SetupSkyboxAndPalette();
30
31             InstantiateControl<SliderControl>(leftPanel)
32                 .Initialize(
"Terrain size X", minXSize, maxXSize, (int) config.terrainSize.x, value =>
33                 {
34                     config.terrainSize.x =
value;
35                     Generate();
36                 });
37
38             InstantiateControl<SliderControl>(leftPanel)
39                 .Initialize(
"Terrain size Y", minYSize, maxYSize, (int) config.terrainSize.y, value =>
40                 {
41                     config.terrainSize.y =
value;
42                     Generate();
43                 });
44
45             InstantiateControl<SliderControl>(leftPanel)
46                 .Initialize(
"Terrain size Z", minZSize, maxZSize, (int) config.terrainSize.z, value =>
47                 {
48                     config.terrainSize.z =
value;
49                     Generate();
50                 });
51
52             InstantiateControl<SliderControl>(leftPanel)
53                 .Initialize(
"Cell size", minCellSize, maxCellSize, config.cellSize, value =>
54                 {
55                     config.cellSize =
value;
56                     Generate();
57                 });
58
59             InstantiateControl<SliderControl>(leftPanel)
60                 .Initialize(
"Noise scale", minNoiseScale, maxNoiseScale, (int) config.noiseScale, value =>
61                 {
62                     config.noiseScale =
value;
63                     Generate();
64                 });
65
66             InstantiateControl<ButtonControl>(leftPanel).Initialize(
"Generate", () => Generate());
67         }
68
69         
private void Update()
70         {
71             UpdateSkybox();
72         }
73
74         
public void Generate(bool randomizeConfig = true)
75         {
76             
if (constantSeed)
77             {
78                 Random.InitState(
0);
79             }
80
81             
if (randomizeConfig)
82             {
83                 GeneratePalette();
84
85                 config.gradient = ColorE.Gradient(
from: GetMainColorHSV(), to: GetSecondaryColorHSV());
86             }
87
88             
var draft = LowPolyTerrainGenerator.TerrainDraft(config);
89             draft.Move(Vector3.left*config.terrainSize.x/
2 + Vector3.back*config.terrainSize.z/2);
90             AssignDraftToMeshFilter(draft, terrainMeshFilter,
ref terrainMesh);
91         }
92     }
93 }


Gõ tìm kiếm nhanh...